Linux sudo命令和sudoers文件

您所在的位置:网站首页 linux 查看文件在哪 Linux sudo命令和sudoers文件

Linux sudo命令和sudoers文件

2024-07-16 19:11| 来源: 网络整理| 查看: 265

一、sudo命令的作用

sudo命令的作用是临时提升当前用户的权限,以使用只有目标用户才能使用的命令,并在命令使用结束后恢复到当前用户权限。最常见的是用来临时使用root才能执行的命令。

su的作用是切换到另一个用户,sudo的作用是临时使用另一个用户的命令

二、用法 sudo -u

使用时,如果不加-u参数,则sudo默认执行root命令。

三、sudoers文件详解

系统:Debian 3.16.0,DC-2靶机

/etc/sudoers是sudo的配置文件,可配置某个普通用户可以使用的sudo命令

1 . sudo -l :查看当前用户可使用的sudo命令 在这里插入图片描述 解释: (ALL) ALL:意思是当前用户(jerry)可以sudo执行root所有命令,但是默认需要输入密码 (root) NOPASSWD: /usr/bin/git : 意思是当前用户可以不需要输入密码即可sudo执行root的/usr/bin/git命令

2 . 切换至root,cat /etc/sudoers查看sudoers文件 在这里插入图片描述 图中跟sudo直接相关的配置是这四个 jerry ALL=(ALL) ALL root ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL jerry ALL = (root) NOPASSWD: /usr/bin/git

它们其实都是一样的格式, 通过编辑sudoers文件,在其中增删类似格式的配置项,就可以增减用户可执行的sudo命令

3 . sudo配置项的完整格式为 用户/组1 主机 = ( [用户] : [用户组] ) [是否需要密码验证:]命令1,[是否需要密码验证:]:命令2……

用户/组1: 表示需要提升权限的用户/组,前面加%表示组,不加表示用户 主机: 表示用户在哪台主机登录时可以使用该条sudo,配置时参数为主机名,ALL表示任意主机 [用户]: 表示提升到该用户的权限,ALL表示任意用户 [用户组]: 表示提升到该用户组的权限,ALL表示任意用户组 ( [用户] : [用户组] ) : 该项可以省略,省略时相当于(root:root) [是否需要密码验证:] : 注意这个密码是当前用户密码。该项省略时表示需要密码,如无需验证,添加参数NOPASSWD 命令1: 表示需要sudo的命令,需要写全命令的绝对路。ALL表示所有命令

所以,跟jerry的sudo可执行命令相关的配置项为 jerry ALL=(ALL) ALL 对从任意设备登录系统的用户jerry,可sudo执行所有root命令 jerry ALL = (root) NOPASSWD: /usr/bin/git 对于从任意设备登录系统的用户jerry,无需输入密码,就可以sudo使用root命令git

4 .通配符以及取消命令 jerry ALL=/usr/bin/*,!/usr/bin/less 命令前面加上 ! 号表示取消该命令,后边加上 * 表示该路径下所有命令。该例子的意思: 对从任意设备登录系统的用户jerry,可sudo执行所有/usr/bin下的所有命令,但less除外

四、编辑sudoers文件

1 . 直接vi编辑sudoers文件

示例:删除用户jerry可以sudo 执行所有root命令的配置

根据之前所述,删除sudoers中的jerry ALL=(ALL) ALL 配置项即可

①查看sudoers文件权限

ls -l /etc/sudoers

可以看到sudoers默认为只读文件 在这里插入图片描述 要修改suders文件,可以通过chmod u+w /etc/sudoers增加写入权限,然后使用vi编辑,也可以直接vi编辑结束后,使用!w强制保存修改。

②给sudoers文件增加写入权限

chmod u+w /etc/sudoers

修改后root对该文件权限变为rw 在这里插入图片描述 ③使用vi编辑sudoers

vi /etc/sudoers

删除jerry ALL=(ALL) ALL 在这里插入图片描述 ④切换回用户jerry,查看sudo能执行的命令,发现已经没有了(ALL) ALL,输入sudo more测试,提示无法执行,修改成功 在这里插入图片描述 2. 使用visudo编辑 linux中,有一个专用的sudoers编辑命令visudo,专门用来编辑sudoers文件,还可以检查配置格式是否正确,推荐使用visudo进行修改

示例:给jerry增加sudo more命令 ①使用which命令查看more命令绝对路径

which more

可以看到绝对路径为/bin/more 在这里插入图片描述 ②visudo打开编辑,添加配置项jerry ALL =(ROOT) NOPASSWD: /bin/more 在这里插入图片描述 编辑好后,ctrl+O保存>回车>ctrl+X退出 ③su jerry切回jerry用户,查看可执行的sudo中命令多了more,测试sudo more可用,修改成功 在这里插入图片描述 3. 编辑sudoers.d代替直接编辑suders文件 查看sudoers文件权限时我们知道,sudoers是个只读文件,说明该文件非常敏感,一旦修改错误默认配置会导致比较棘手的问题。官方推荐通过编辑/etc/sudoers.d目录下的文件来达到所需配置。 在这里插入图片描述 在sudoers文件最后,可看到图中一行代码,从includedir可以看出,该行的作用与PHP中文件包含类似,包含并使用/etc/sudoers.d中的配置文件。事实上,任何在/etc/sudoers.d/目录下,不以~号结尾的文件和不包含.号的文件,都会被当成/etc/sudoers的内容解析。因此,我们只需要到/etc/sudoers.d目录下写入一个配置文件即可。

示例:给jerry增加sudo less命令

①直接使用vi在/etc/sudoers.d目录下创建一个test文件

vi /etc/sudoers.d/test

写入jerry ALL =(root) NOPASSWD: /usr/bin/less,保存 在这里插入图片描述PS: a.使用which less可知less的绝对路径为/usr/bin/less b.使用vi编辑文件时,若需要编辑的文件不存在,则会新建一个文件

②切换为jerry,测试sudo less命令,添加成功 在这里插入图片描述 参考链接: linux详解sudoers



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3